package WindwosAPP

import (
	Client "GOChat/golang-tcpserver/client"
	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/canvas"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/layout"
	"fyne.io/fyne/v2/widget"
	"image/color"
	"time"
)

var Gh = color.RGBA{0x44, 0xcc, 0xcc, 0xff}

func Login() {
	//创建登陆界面
	APP1 := app.New()
	w1 := APP1.NewWindow("登陆") //窗口标题

	//创建一个登陆组件
	//创建一个form表单
	e1 := widget.NewEntry()
	F1 := widget.NewFormItem("用户名", e1) //创建formItem组件，以此来创建form表单
	//e2 := widget.NewPasswordEntry()
	e2 := widget.NewPasswordEntry()
	F2 := widget.NewFormItem("密码", e2)
	C1 := canvas.NewText("用户名或密码错误", color.Black)
	C1.Hide()
	F := widget.NewForm(F1, F2) //使用这个函数的前提是先创建formItem组件
	F.SubmitText = "登陆"         //设置form表单提交按钮的文本
	F.OnSubmit = func() {       //设置当表单提交所触发时的事件
		//用户名
		//"用户名："		e1.Text
		//"密  码：" 	e2.Text
		if Client.SelectLogin(e1.Text, e2.Text) { //返回true，运行登陆
			//使用协程同时执行事件，避免线程过大问题
			//打开主窗口
			go Master()
			//关闭该登陆窗口
			go func() {
				C1.Text = "登陆成功"
				C1.Refresh()
				w1.Close()
			}()
			return
		}
		go func() {
			//弹出展示错误信息
			C1.Show()
			time.Sleep(2 * time.Second)
			C1.Hide()
		}()
	}
	F.CancelText = "注册" //设置form的撤销操作
	F.OnCancel = func() {
		println("注册")
	}
	//密码重置功能(下版本实现)
	w1.SetContent(container.NewVBox(layout.NewSpacer(), container.NewCenter(C1), container.NewCenter(F), container.NewCenter()))
	w1.Resize(fyne.NewSize(600, 500)) //设置窗口的初始化大小
	resource, err := fyne.LoadResourceFromPath("D:\\Goland\\GOChat\\golang-tcpserver\\导航选中画板.svg")
	if err != nil {
		return
	}
	w1.SetIcon(resource)
	w1.ShowAndRun()
}
